fix(mobile): restore iOS Threads branding - #4862
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Approved 077cbed This PR introduces a branded header component for iOS navigation bars and integrates it across the mobile app. Changes are purely presentational (logo, text styling, stage labels) with no significant runtime behavior impact beyond visual appearance. You can customize Macroscope's approvability policy. Learn more. |
|
@macroscope-app please refresh the PR summary in the description markers. |
|
Sorry, I'm unable to act on this request because you do not have permissions within this repository. |
7b622b0 to
574c5d8
Compare
Dismissing prior approval to re-evaluate 574c5d8
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 574c5d8. Configure here.
Dismissing prior approval to re-evaluate fc85e35
Dismissing prior approval to re-evaluate 077cbed
@juliusmarminge blur issues fixed !
|


Summary
Threadsroute title, accessibility identity, and iOS scroll-edge fadeFixes: #4864.
Important
Merge #4861 after this to correct the Android build-channel pill.
Why
Android gained branded Threads navigation in #3774 and iOS followed in #4025. The final commit in #4163 removed only the iOS lockup while renaming mobile navigation headers to
Threads, leaving the two platforms inconsistent.The first restoration also replaced the native title directly, which broke iOS scrollfade. This version keeps
Threadsas the native route title for UIKit, accessibility, routing, and deep links, then presents the visible “T3 Code” lockup as an accessible leading heading. Split detail mode explicitly clears that item, and toolbar ownership changes run before paint so rotating or changing layouts cannot pop the brand into the wrong pane.Before / After
iPhone
iPadOS
Both comparisons use the deterministic dark-mode Threads fixture with no popup.
Verification
vp test run scripts/mobile-showcase.test.ts apps/mobile/src/lib/mobileBranding.test.ts apps/mobile/src/native/scrollEdgeEffects.test.ts- 27 tests passedvp run --filter @t3tools/mobile typecheckgit diff --checkStore upload assets remain generated, ignored workflow artifacts under
artifacts/app-store/screenshots/; PR proof images are not committed.Checklist
Model: GPT-5.6 Sol | Harness: Codex in T3 Code
Note
Low Risk
Changes are limited to mobile navigation chrome, layout metrics, and internal showcase scripts; routing and deep links stay on the production scheme with no auth or data-path changes.
Overview
Restores the compact T3 Code navigation lockup (wordmark, “Code”, and a build-stage chip) on iPhone and iPad Threads instead of the plain Threads title, while keeping route/linking identity as Threads and accessible heading “T3 Code, Threads”.
Adds
CompactBrandTitleandgetCompactBrandHeaderOptions, which on iOS liquid glass injects the lockup as a custom leading header item and otherwise uses a customheaderTitle. Stage labels map app variant to Dev, Nightly, or Alpha viaresolveMobileStageLabel. SharedHOME_HORIZONTAL_INSET/ iPad offsets align the header with compact thread-list content.HomeRouteScreenclears left header items in split detail mode and reapplies brand options on phone; sidebar shell and mainStackHome screen use the same helper.NativeHeaderToolbarRootswitches touseLayoutEffectso split vs compact layouts do not race on header toolbar registration.Showcase/screenshot tooling switches from development (
t3code-dev,T3CodeDev) to production (t3code,T3Code,APP_VARIANT=production) so captures match store branding (e.g. Alpha chip).Reviewed by Cursor Bugbot for commit 077cbed. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Restore iOS Threads branding in navigation headers using a compact brand lockup component
CompactBrandTitlecomponent that renders a T3 wordmark, 'Code' label, and a dynamic stage badge ('Alpha', 'Dev', 'Nightly') based on app variant.getCompactBrandHeaderOptions()which selects between a transparent title with a native leading item (iOS liquid glass) or a customheaderTitlecomponent for other platforms.HomeRouteScreento usegetCompactBrandHeaderOptions()instead of static title strings.HomeRouteScreento explicitly clearunstable_headerLeftItemsto prevent stale header items.useEffecttouseLayoutEffectinNativeHeaderToolbarRootso toolbar items are applied before paint, reducing interim header flicker.Macroscope summarized 077cbed.